// index.js
// 获取应用实例
const app = getApp()

Page({
  data: {
    item:0,
    tab:0,
    playlist:[{
      id:1,
      title:'钢琴协奏曲',
      singer:'肖邦',
      src:'http://172.16.26.249:3000/1.mp3',
      coverImgUrl:'/images/cover.jpg'
    },{
        id:2,
        title:'奏鸣曲',
        singer:'莫扎特',
        src:'http://172.16.26.249:3000/2.mp3',
        coverImgUrl:'/images/cover.jpg'
      },{
        id:3,
        title:'欢乐颂',
        singer:'贝多芬',
        src:'http://172.16.26.249:3000/3.mp3',
        coverImgUrl:'/images/cover.jpg'
      },{
        id:4,
        title:'爱之梦',
        singer:'李斯特',
        src:'http://172.16.26.249:3000/4.mp3',
        coverImgUrl:'/images/cover.jpg'
    }],

    state:'paused',
    playIndex:0,
    play:{
      currentTime:'00:00',
      duration:'00:00',
      percent:0,
      title:'',
      singer:'',
      coverImgUrl:'/images/cover.jpg',
    }
  },

  //播放按钮
  play:function(){
    this.audioCtx.play()
    console.log('开始播放' + this.audioCtx.src)
    this.setData({
      state:'running'
    })
  },
  //暂停按钮
  pause:function(){
    this.audioCtx.pause()
    this.setData({
      state:'paused'
    })
  },
  
  //下一曲按钮
  next:function(){
    var index = (this.data.playIndex>=this.data.playlist.length - 1)? 0 : this.data.playIndex + 1;
    console.log(index);
    this.setMusic(index);
    if(this.data.state === 'running'){
      this.play()
    }
  },
  changeItem:function(e){
    this.setData({
      item:e.target.dataset.item,
    })
  },
  changeTab:function(e){
    this.setData({
      tab:e.detail.current
    })
  },

  

    // 事件处理函数
    bindViewTap() {
      wx.navigateTo({
        url: '../logs/logs'
      })
    },
    onLoad() {
      if (wx.getUserProfile) {
        this.setData({
          canIUseGetUserProfile: true
        })
      }
    },
  
  // //实现播放器播放功能
  // audioCtx:null,
  onReady:function(){
    this.audioCtx = wx.createInnerAudioContext();

    //默认选择第1曲
    this.setMusic(0)
    var that = this
    //播放进度检测
    this.audioCtx.onError(function(){
      console.log('播放失败:' + that.audioCtx.src)
    })
  },

  audioCtx:null,
  onReady:function(){
    this.audioCtx = wx.createInnerAudioContext();

    //默认选择第1曲
    this.setMusic(0);
    var that = this;
    //播放进度检测
    this.audioCtx.onError(
      function(){
      console.log('播放失败:' + that.audioCtx.src)
    }
  );
    
    //播放完成自动换下一曲
    this.audioCtx.onEnded(
      function(){
      that.next()
    });
    this.audioCtx.onPlay(function() {} );
    //自动更新播放进度
      this.audioCtx.onTimeUpdate(
        function(){
        console.log(that.audioCtx.currentTime + that.audioCtx.duration)
        that.setData({
          'play.duration':formaTime(that.audioCtx.duration),
          'play.currentTime':formaTime(that.audioCtx.currentTime),
          'play.percent':(that.audioCtx.currentTime / that.audioCtx.duration) * 100
        })
      })
      //格式化时间
      function formaTime(time){
        var minute = Math.floor(time/60) % 60;
        var second = Math.floor(time) % 60;
        return (minute<10 ? '0' + minute : minute) +':' +(second < 10 ? '0' + second : second);
      }
  },
  //音乐播放
  setMusic:function(index){
    var music = this.data.playlist[index]
    this.audioCtx.src = music.src
    this.setData({
      playIndex:index,
      'play.title':music.title,
      'play.singer':music.singer,
      'play.coverImgUrl':music.coverImgUrl,
      'play.currentTime':'00:00',
      'play.duration':'00:00',
      'play.percent':0
    })
  },
  //滚动条调节歌曲进度
slideChage(e){
    var second = e.detail.value * this.audioCtx.duration / 100;
    this.audioCtx.srck(second);
  },
  //播放列表换取功能
  change:function(e){
    this.setMusic(e.currentTarget.dataset.index)
    this.play()
  },
  getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认，开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
    wx.getUserProfile({
      desc: '展示用户信息', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        console.log(res)
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    })
  },
  getUserInfo(e) {
    // 不推荐使用getUserInfo获取用户信息，预计自2021年4月13日起，getUserInfo将不再弹出弹窗，并直接返回匿名的用户个人信息
    console.log(e)
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
  }
})
